package hr.ctg.domain.model;

// Generated 2007.05.02 22:50:59 by Hibernate Tools 3.2.0.b9

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;

import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import org.hibernate.validator.Length;
import org.hibernate.validator.NotNull;
import org.jboss.seam.annotations.Name;

/**
 * DojamPosjetitelja generated by hbm2java
 */
@Entity
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@Table(name = "dojam_posjetitelja")
@NamedQueries( {
		@NamedQuery(name = "DojamPosjetitelja.findByIdObjektaNKNotNull", query = "select d from DojamPosjetitelja d where d.objekt.idObjekta = ? and (d.naslov IS NOT NULL OR d.komentar IS NOT NULL) order by d.datum desc"),
		@NamedQuery(name = "DojamPosjetitelja.findVotesCount", query = "select count(d) from DojamPosjetitelja d where d.objekt.idObjekta = ? "),
		@NamedQuery(name = "DojamPosjetitelja.findByObjektIdKorisnikaIp", query = "select d from DojamPosjetitelja d where d.objekt.idObjekta = ? and d.korisnik.idKorisnika = ? and ip = ? order by d.datum desc"),
		@NamedQuery(name = "DojamPosjetitelja.findByIdObjektaIdKorisnika", query = "select d from DojamPosjetitelja d where d.objekt.idObjekta = ? and d.korisnik.idKorisnika = ? order by d.datum desc"),
		@NamedQuery(name = "DojamPosjetitelja.findByIdMjestaIdKorisnika", query = "select d from DojamPosjetitelja d where d.mjesto.idMjesta = ? and d.korisnik.idKorisnika = ? order by d.datum desc"),
		@NamedQuery(name = "DojamPosjetitelja.findByIdOtokaIdKorisnika", query = "select d from DojamPosjetitelja d where d.otok.idOtoka = ? and d.korisnik.idKorisnika = ? order by d.datum desc"),
		@NamedQuery(name = "DojamPosjetitelja.findByIdParkaIdKorisnika", query = "select d from DojamPosjetitelja d where d.park.idParka = ? and d.korisnik.idKorisnika = ? order by d.datum desc"),
		@NamedQuery(name = "DojamPosjetitelja.findByIdKorisnika", query = "select d from DojamPosjetitelja d where d.korisnik.idKorisnika = ? order by d.datum desc"),
		@NamedQuery(name = "DojamPosjetitelja.findDojamCount", query = "select count(d) from DojamPosjetitelja d where d.objekt.idObjekta = ? and (d.naslov IS NOT NULL OR d.komentar IS NOT NULL)"),
		@NamedQuery(name = "DojamPosjetitelja.findCompleteDojamCount", query = "select count(d) from DojamPosjetitelja d where (d.naslov IS NOT NULL OR d.komentar IS NOT NULL)"),
		@NamedQuery(name = "DojamPosjetitelja.findLastDojams", query = "select dpo from Objekt o join o.dojamPosjetiteljas dpo where (dpo.naslov IS NOT NULL OR dpo.komentar IS NOT NULL) order by dpo.datum desc"),
		@NamedQuery(name = "DojamPosjetitelja.findLast", query = "select d from DojamPosjetitelja d where d.objekt.idObjekta = ? and (d.naslov IS NOT NULL OR d.komentar IS NOT NULL) order by d.datum desc"),
		@NamedQuery(name = "DojamPosjetitelja.findByIdObjekta", query = "select d from DojamPosjetitelja d where d.objekt.idObjekta = ? order by d.datum desc"),
		@NamedQuery(name = "DojamPosjetitelja.findByIdMjesta", query = "select d from DojamPosjetitelja d where d.mjesto.idMjesta = ? order by d.datum desc"),
		@NamedQuery(name = "DojamPosjetitelja.findByIdOtoka", query = "select d from DojamPosjetitelja d where d.otok.idOtoka = ? order by d.datum desc"),
		@NamedQuery(name = "DojamPosjetitelja.findByIdParka", query = "select d from DojamPosjetitelja d where d.park.idParka = ? order by d.datum desc") })
@Name("dojamPosjetitelja")
public class DojamPosjetitelja implements java.io.Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 7702072186257852703L;

	private Long idDpp;
	private Objekt objekt;
	private Mjesto mjesto;
	private Otok otok;
	private Park park;
	private Korisnik korisnik;
	private String komentar;
	private Date datum;
	private short ocjena;
	private String naslov;

	public DojamPosjetitelja() {
	}

	public DojamPosjetitelja(final Long idDpp, final Objekt objekt,
			final Korisnik korisnik, final String komentar, final Date datum) {
		this.idDpp = idDpp;
		this.objekt = objekt;
		this.korisnik = korisnik;
		this.komentar = komentar;
		this.datum = datum;
	}

	@Column(name = "datum", nullable = false, length = 0)
	@NotNull
	public Date getDatum() {
		return datum;
	}

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name = "id_dpp", unique = true, nullable = false)
	public Long getIdDpp() {
		return idDpp;
	}

	@Column(name = "komentar")
	@Length(max = 1000)
	public String getKomentar() {
		return komentar;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "id_korisnika", nullable = false)
	@NotNull
	public Korisnik getKorisnik() {
		return korisnik;
	}

	@Column(name = "naslov")
	@Length(max = 100)
	public String getNaslov() {
		return naslov;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "id_objekta", nullable = true)
	public Objekt getObjekt() {
		return objekt;
	}

	@Column(name = "ocjena", nullable = false)
	@NotNull
	public short getOcjena() {
		return ocjena;
	}

	public void setDatum(final Date datum) {
		this.datum = datum;
	}

	public void setIdDpp(final Long idDpp) {
		this.idDpp = idDpp;
	}

	public void setKomentar(final String komentar) {
		this.komentar = komentar;
	}

	public void setKorisnik(final Korisnik korisnik) {
		this.korisnik = korisnik;
	}

	public void setNaslov(final String naslov) {
		this.naslov = naslov;
	}

	public void setObjekt(final Objekt objekt) {
		this.objekt = objekt;
	}

	public void setOcjena(final short ocjena) {
		this.ocjena = ocjena;

	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "id_mjesta", nullable = true)
	public Mjesto getMjesto() {
		return mjesto;
	}

	public void setMjesto(final Mjesto mjesto) {
		this.mjesto = mjesto;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "id_otoka", nullable = true)
	public Otok getOtok() {
		return otok;
	}

	public void setOtok(final Otok otok) {
		this.otok = otok;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "id_parka", nullable = true)
	public Park getPark() {
		return park;
	}

	public void setPark(final Park park) {
		this.park = park;
	}
}
